home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
05
/
6
/
DISK0564.ZIP
/
SOURCE.ARC
/
ASM.ARC
/
CONSOLE.ASM
< prev
next >
Wrap
Assembly Source File
|
1987-11-01
|
3KB
|
137 lines
TITLE MSDOS CONSOLE I/O ROUTINES
.XLIST
INCLUDE ASCII.DEF
INCLUDE MSDOS2.DEF
.LIST
DOSSEG
.MODEL SMALL
.CODE
EXTRN UC:NEAR
PUBLIC COUT,SCIN,CIN,CLRCO,CRLF,PRTSTR,ERRORMSG,GETYORN
; CONSOLE I/O ROUTINES FOR MSDOS
; PRTSTR = PRINTS ASCIIZ STRING TO STDOUT
; ENTRY: DS:DX POINTS TO MSG (ASCIIZ STRING)
; USES: AX,DX,FLAGS
;
PRTSTR PROC NEAR
PUSH BX
PRTSTR1: MOV BX,DX
MOV AL,BYTE PTR [BX]
CMP AL,0
JZ PRTSTR2
CALL COUT
INC DX
JMP PRTSTR1
PRTSTR2:
POP BX
RET
PRTSTR ENDP
; COUT = OUTPUT CHARACTER IN AL
;
COUT PROC NEAR
PUSH DX
PUSH AX
MOV DL,AL
MOV AH,STD_CON_OUTPUT
INT DOS
POP AX
POP DX
RET
COUT ENDP
; SCIN = SEE IF CONSOLE CHARACTER AVAILABLE
; RETURNS 'C'=1 IF NOT AVAILABLE
; ELSE RETURNS CHAR. IN AL
;
SCIN PROC NEAR
MOV AH,CON_INPUT_STATUS
INT DOS
CMP AL,0
JNZ SHORT GOTSOME
STC
RET
GOTSOME:
CALL NEAR PTR CIN
CLC
RET
SCIN ENDP
; CIN = GET CHARACTER FROM KEYBOARD
; EXIT: CHAR IN AL
;
CIN PROC NEAR
MOV AH,CON_INPUT_NO_ECHO
INT DOS
RET
CIN ENDP
; CLRCO = CLEAR TYPE-AHEAD BUFFER
;
CLRCO PROC NEAR
CLRC1: CALL SCIN
JNC CLRC1
RET
CLRCO ENDP
;
; CRLF = SEND CR + LF TO CONSOLE
;
CRLF PROC NEAR
MOV AL,CR
CALL COUT
MOV AL,LF
CALL COUT
RET
CRLF ENDP
; ERRORMSG = WRITE MESSAGE TO STD. ERROR OUTPUT
; ENTRY: DS:DX POINTS TO MSG (ASCIIZ STRING)
; USES: AX,DX,FLAGS
;
ERRORMSG PROC NEAR
PUSH BX
PUSH CX
ERRMSG1:
MOV BX,DX
MOV AL,BYTE PTR [BX]
XCHG DX,BX
CMP AL,0
JZ ERRMSG2
MOV CX,1
MOV AH,WRITE
MOV BX,2
INT DOS
INC DX
JMP ERRMSG1
ERRMSG2:
POP CX
POP BX
RET
ERRORMSG ENDP
; GETYORN = GET 'Y' OR 'N' RESPONSE FROM CONSOLE
; RETURNS CHAR. ( Y OR N ) IN AX
GETYORN PROC NEAR
CALL CLRCO ;CLEAR TYPE-AHEAD
NOTYN: CALL CIN ;GET CONSOLE CHAR.
CALL UC ;MAKE UPPER-CASE
CMP AL,'Y'
JE GOTY
CMP AL,'N'
JNE NOTYN ;IF NOT Y OR N
GOTY: PUSH AX
CALL COUT
CALL CRLF
POP AX
MOV AH,0 ;IN CASE USER DOES WORD COMPARISON
RET
GETYORN ENDP
END